#include "../src/biTree/biTree.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

extern func_BiTree fBiTree;

int main(int argc, const char *argv[])
{
    int ret = 0;
    BiTNode *tree = NULL;

    /**
     * 创建一个二叉树
     * 如果为了增加灵活性，可以将先序遍历和中序遍历的字符串通过终端输入
     * 本测试中为了方便测试，直接采用写入的方法测试
     * 如果您有兴趣，可以自己进行尝试
     **/
    tree = fBiTree.create((unsigned char *)"ABDHKECFIGJ", (unsigned char *)"HKDBEAIFCGJ", 11);

    if (tree != NULL)
    {
        printf("二叉树创建成功！\n");
    }
    else
    {
        printf("二叉树创建出现异常！\n");
        ret = -1;
        goto ERROR_END;
    }

    printf("先序遍历输出：");
    fBiTree.prevOrder(tree);
    putchar(10);

    printf("中序遍历输出：");
    fBiTree.inOrder(tree);
    putchar(10);

    printf("后序遍历输出：");
    fBiTree.postOrder(tree);
    putchar(10);

    printf("层序遍历输出：");
    fBiTree.levelOrder(tree);
    putchar(10);

ERROR_END:
    // 释放二叉树
    fBiTree.release(tree);

    printf("system exit!\n");

    return ret;
}
